<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Cat;
use DB;

use App\Http\Requests;
use App\Http\Controllers\Controller;

/**
*栏目系列控制器
*处理栏目相关业务逻辑
*/

class CatController extends Controller
{

//调用CatModel中的无限极分类方法getTree()

public function wxj($cid=0){
  $cat=new Cat();
  return $cat->getTree($pid=$cid);
}


    /**
    *添加栏目，数据提交到caddpost进行处理
    */
    public function cadd(){

    $cats=$this->wxj();

        return view('admin/catadd',['cats'=>$cats]);
    }

   /**
   *添加栏目，处理cadd提交过来的数据，主要为验证和存入数据库
   *@return 成功跳转到列表，失败返回上一页
   */
   public function caddpost(Request $req){

    $cat=new Cat();

   $cat->cat_name=$req->cat_name;
    $cat->parent_id=$req->parent_id;
    $cat->save();

    return redirect('admins/clist');
}

   /**
   *栏目列表 将所有产品栏目进行展示
   *
   *需调用Model中Cat模型对应的无限极分类方法
   */
   public function clist(){
    $cats=$this->wxj();
    return view('admin/catlist',['cats'=>$cats]);

   }

   /**
   *栏目删除
   *@param int $cid 需要删除的栏目id
   *@return 成功跳转到列表页，失败则报错
   */
   public function cdel($cid){
   
   $row=count(Cat::where('parent_id',$cid)->get());
    $cat=Cat::find($cid);

   $num=$cat->goods_num;

//如果栏目下有子栏目或者商品则不能删除并跳转到列表页
  if($row || $num)
     {return redirect('admins/clist');}
    Cat::where('cat_id',$cid)->delete();
     return redirect('admins/clist');
}

   /**
   *栏目编辑
   *@param int $cid 需要编辑的栏目id
   */
   public function cedit($cid=2){

    $cat=Cat::find($cid);
    $cats=$this->wxj();
    return view('admin/catedit',['cat'=>$cat,'cats'=>$cats]);
  }

   public function ceditpost(Request $req,$cid){
    $sc=$this->wxj($cid);
    $p=$req->parent_id;
    //修改顶级栏目为父栏目
    if ($p==0) {
      Cat::where('cat_id',$cid)->update(
      [
        'cat_name'=>$req['cat_name'],
        'parent_id'=>$req['parent_id']
      ]

      );
    return redirect('admins/clist');
}
    else{
    $cat=Cat::find($p);
    $pp=$cat->parent_id;
    $ppp=$cat->cat_id;
    foreach($sc as $s){
    //如果将本栏目和子栏目设为自己的父栏目则跳转到列表页
    if (($pp==$s->parent_id) || ($ppp==$p)) {
    return redirect('admins/clist');
     }
   }

    Cat::where('cat_id',$cid)->update(
      [
        'cat_name'=>$req['cat_name'],
        'parent_id'=>$req['parent_id']
      ]

      );
    return redirect('admins/clist');
}
  }
    }
   


